Software developers often use functions when coding software programs. A function is a portion of code within a larger program that performs particular assignment and is relatively independent of the remainder of the code. Functions allow a developer to divide a program into sections so that those sections can be reused throughout the program for different value without the need to rewrite the program each time the values are changed.
In general, a function accepts a parameter as input, processes the parameter according to the function, and then returns a result. A parameter is a generic placeholder that acts as a proxy until an actual value is assigned to the parameter. Once the actual value is assigned to the parameter then the expression is evaluated with the assigned value rather than the placeholder.
Software developers also may use of expressions, which are a combination of functions and values. Software developers often build up expressions when they are writing programs. Based on rules of precedence and association for the particular programming language being used, an expression is computed and a value or answer is returned. This process of computing and returning a value for an expression is known as “evaluating the expression.”
One way in which expressions are represented so that they can be evaluated is by using expression graphs. An expression graph is a directed acyclic graph having nodes and edges. The nodes are values and operators that are connected to each other by edges. For example, assume a simple expression is created that is (A+B)*C. In order to build an expression graph for this expression nodes are created for “A,” “B,” and “C” and nodes “A” and “B” are connected by a “+” node. Moreover, a node is created for “*” and that node is placed above the “+” node and a line is drawn down to the “+” node and a line down to C. This is an expression graph representing the expression (A+B)*C.
Expression graphs include both operator nodes and leaf nodes. A leaf node (or external node) is a node of an expression graph that contains a value. In addition, the leaf node has zero child nodes or other nodes hanging off of them. An operator node is a node in the expression graph that performs an operation (such as addition or multiplication) on the values in the leaf nodes. In the above example, the “+” node and the “*” node are operator nodes, and the values “A,” “B,” and “C” nodes are leaf nodes.